﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web;

namespace rosata.Providers.PromozioniProvider
{
    public interface IPromozioniProvider
    {
        List<PromozioneDto> ListaPromozioni();

        void AddPromozione(PromozioneDto promozioneDto);

        void UpdatePromozione(PromozioneDto promozioneDto);

        List<PromozioneDto> GetListaPromozioniAttive();

        void UpdateImmaginePiccolaPromozione(int idPromozione, HttpPostedFileBase immaginePiccola);

        void UpdateImmagineHeaderPromozione(int idPromozione, HttpPostedFileBase immagineHeader);

        void UpdateDocumentoPromozione(int idPromozione, HttpPostedFileBase documento);

        void DeletePromozione(int idPromozione);

        PromozioneDto GetPromozioneById(int idPromozione);
    }

    public class PromozioneDto
    {
        public int Id { get; set; }
        
        public HttpPostedFileBase ImmagineHeaderSito { get; set; }
        
        public string NomeImmagineHeaderSito { get; set; }
        
        [Required]
        public HttpPostedFileBase ImmaginePiccola { get; set; }
        
        public HttpPostedFileBase ImmaginePiccolaUpdate { get; set; }
        
        public string NomeImmaginePiccola { get; set; }
        
        [Required]
        [DataType(DataType.Time)]
        public DateTime DataInizio { get; set; }
        
        [Required]
        [DataType(DataType.Time)]
        public DateTime DataFine { get; set; }

        [StringLength(2000, ErrorMessage = "il {0} deve essere compreso tra {2} e {1} caratteri", MinimumLength = 5)]
        [MaxLength(2000, ErrorMessage = "il {0} deve essere compreso tra {2} e {1} caratteri")]
        [Display(Name = "Testo Descrittivo")]
        [Required]
        public string TestoDescrittivo { get; set; }

        [StringLength(50, ErrorMessage = "il {0} deve essere compreso tra {2} e {1} caratteri", MinimumLength = 5)]
        [MaxLength(50, ErrorMessage = "il {0} deve essere compreso tra {2} e {1} caratteri")]
        [Required(ErrorMessage = "inserire il titolo della promozione")]
        [Display(Name = "Titolo Promozione")]
        public string TitoloPromozione { get; set; }
        
        public HttpPostedFileBase Documento { get; set; }

        public string NomeDocumento { get; set; }

    }
}
